// 3. 具体状态：已支付
/// <summary>
/// 具体状态类：已支付状态
/// 表示订单已经支付但尚未发货的状态
/// </summary>
public class PaidState : OrderState
{
  /// <summary>
  /// 构造函数
  /// </summary>
  /// <param name="context">订单上下文对象</param>
  public PaidState(OrderContext context) : base(context) { }

  /// <summary>
  /// 支付操作 - 在已支付状态下不能重复支付
  /// </summary>
  public override void Pay() => Console.WriteLine("已支付，无需重复支付");
  
  /// <summary>
  /// 发货操作 - 在已支付状态下可以发货，转换到已发货状态
  /// </summary>
  public override void Ship()
  {
    Console.WriteLine("订单已发货");
    _context.SetState(new ShippedState(_context));
  }
  
  /// <summary>
  /// 完成操作 - 在已支付状态下不能直接完成
  /// </summary>
  public override void Complete() => Console.WriteLine("错误：未发货不能完成");
  
  /// <summary>
  /// 取消操作 - 在已支付状态下可以取消，转换到已取消状态
  /// </summary>
  public override void Cancel()
  {
    Console.WriteLine("订单已取消（已支付）");
    _context.SetState(new CanceledState(_context));
  }
}